package com.administrator.scoreManageSys.mapper.organization;

import com.administrator.scoreManageSys.entity.system.User;
import com.alibaba.fastjson.JSONObject;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author zsh
 * @date 2022/04/06/ 11:21
 */
public interface OrganizationMapper {


    /**
     * 获取用户账户信息
     * @param roleId   角色id
     * @param phone    手机号
     * @param name     名称
     * @return 用户账户信息列表
     */
    List<User> userAccountList(@Param("roleId") Long roleId, @Param("phone") Long phone, @Param("name") String name);

    /**
     * 检查账号学号是否存在
     * @param account 账号
     * @param userNumber 学号
     * @return 是否存在 0不存在
     */
    int checkAccount(@Param("account") String account, @Param("userNumber") String userNumber);

    /**
     * 添加用户
     * @param user 用户信息
     */
    void userAccountAdd(@Param("user") User user);

    /**
     * 添加账户和班级关系
     * @param id 用户id
     * @param classId 班级id
     * @param i 所属关系 1/2/3 学生/任课教师/班主任
     */
    void insertClassByUser(@Param("id") Long id, @Param("classId") Long classId, @Param("i") int i);

    /**
     * 删除用户所有密保
     * @param id 用户密保
     */
    void resetPasswordProtection(@Param("id") Long id);

    /**
     * 重置密码
     * @param id 用户id
     * @param password 用户密码
     */
    void changePassword(@Param("id") Long id, @Param("password") String password);

    /**
     * 修改用户
     * @param user 用户
     */
    void userAccountUpdate(@Param("user") User user);

    /**
     * 更改用户班级
     * @param id 用户id
     * @param oldClassId 原班级
     * @param classId 新班级
     */
    void updateClassAndUser(@Param("id") Long id, @Param("oldClassId") Long oldClassId, @Param("classId") Long classId);

    /**
     * 获取用户账户信息
     * @param roleId   角色id
     * @param phone    手机号
     * @param name     名称
     * @return 用户账户信息列表
     */
    List<User> exportUserList(@Param("roleId") Long roleId, @Param("phone") Long phone, @Param("name") String name);

    /**
     * 删除用户
     * @param id 用户id
     */
    void deleteAccount(@Param("id") Long id);

    /**
     * 获取用户详细信息
     * @param id 用户id
     * @return 详细信息
     */
    JSONObject getUserDetail(@Param("id") Long id);
}
